Improve regexp to match toplevel bindings
authorIqbal Ansari <iqbalansari02@yahoo.com>
Sat, 10 Oct 2015 12:34:02 +0000 (18:04 +0530)
committerIqbal Ansari <iqbalansari02@yahoo.com>
Fri, 13 Nov 2015 17:10:05 +0000 (22:40 +0530)
which-key.el

index 23a51a5d94a61d581a58a3dc3cb0c38003166b72..d14e13dba042cb743b96086cb8a6d8f95db19120 100644 (file)
@@ -1235,11 +1235,27 @@ alists. Returns a list (key separator description)."
 BUFFER that follow the key sequence KEY-SEQ."
   (let* ((key-str-qt (regexp-quote (key-description which-key--current-prefix)))
          (buffer (current-buffer))
+         ;; Temporarily use tabs to indent
          (indent-tabs-mode t)
          (keybinding-regex (if which-key--current-prefix
                                (format "^%s \\([^ \t]+\\)[ \t]+\\(\\(?:[^ \t\n]+ ?\\)+\\)$"
                                        key-str-qt)
-                             "^\\([^ <>\t]+\\)[\t]+\\([^\n]+\\)$"))
+                             ;; For toplevel binding, we search for lines which
+                             ;; start with a sequence of characters other than
+                             ;; space and tab and '<', '>' (these are ignored
+                             ;; since mostly these are the keyboard input
+                             ;; definitions provided by iso-transl or (mouse)
+                             ;; bindings for the `fringe' or `modeline' which
+                             ;; might not be as interesting), the initial
+                             ;; sequence should be followed by one or more
+                             ;; tab/space which are then followed by a sequence
+                             ;; of non newline/tab characters
+                             ;; For example the following should match
+                             ;; C-x             Prefix Command
+                             ;; But following should not
+                             ;; C-x 8           Prefix Command
+                             ;; <S-dead-acute>  Prefix Command
+                             "^\\([^ <>\t]+\\)[ \t]+\\([^\t\n]+\\)$"))
          key-match desc-match unformatted)
     (save-match-data
       (with-temp-buffer